struct Mesh {
  /* @offset(0) */
  world : mat4x4<f32>,
  /* @offset(64) */
  visibility : f32,
}

struct Scene {
  /* @offset(0) */
  viewProjection : mat4x4<f32>,
  /* @offset(64) */
  view : mat4x4<f32>,
  /* @offset(128) */
  projection : mat4x4<f32>,
  /* @offset(192) */
  vEyePosition : vec4<f32>,
}

struct Internals {
  /* @offset(0) */
  yFactor_ : f32,
  /* @offset(4) */
  textureOutputHeight_ : f32,
}

struct Material {
  /* @offset(0) */
  diffuseLeftColor : vec4<f32>,
  /* @offset(16) */
  diffuseRightColor : vec4<f32>,
  /* @offset(32) */
  opacityParts : vec4<f32>,
  /* @offset(48) */
  reflectionLeftColor : vec4<f32>,
  /* @offset(64) */
  reflectionRightColor : vec4<f32>,
  /* @offset(80) */
  refractionLeftColor : vec4<f32>,
  /* @offset(96) */
  refractionRightColor : vec4<f32>,
  /* @offset(112) */
  emissiveLeftColor : vec4<f32>,
  /* @offset(128) */
  emissiveRightColor : vec4<f32>,
  /* @offset(144) */
  vDiffuseInfos : vec2<f32>,
  /* @offset(152) */
  vAmbientInfos : vec2<f32>,
  /* @offset(160) */
  vOpacityInfos : vec2<f32>,
  /* @offset(168) */
  vReflectionInfos : vec2<f32>,
  /* @offset(176) */
  vReflectionPosition : vec3<f32>,
  /* @offset(192) */
  vReflectionSize : vec3<f32>,
  /* @offset(208) */
  vEmissiveInfos : vec2<f32>,
  /* @offset(216) */
  vLightmapInfos : vec2<f32>,
  /* @offset(224) */
  vSpecularInfos : vec2<f32>,
  /* @offset(240) */
  vBumpInfos : vec3<f32>,
  /* @offset(256) */
  diffuseMatrix : mat4x4<f32>,
  /* @offset(320) */
  ambientMatrix : mat4x4<f32>,
  /* @offset(384) */
  opacityMatrix : mat4x4<f32>,
  /* @offset(448) */
  reflectionMatrix : mat4x4<f32>,
  /* @offset(512) */
  emissiveMatrix : mat4x4<f32>,
  /* @offset(576) */
  lightmapMatrix : mat4x4<f32>,
  /* @offset(640) */
  specularMatrix : mat4x4<f32>,
  /* @offset(704) */
  bumpMatrix : mat4x4<f32>,
  /* @offset(768) */
  vTangentSpaceParams : vec2<f32>,
  /* @offset(776) */
  pointSize : f32,
  /* @offset(780) */
  alphaCutOff : f32,
  /* @offset(784) */
  refractionMatrix : mat4x4<f32>,
  /* @offset(848) */
  vRefractionInfos : vec4<f32>,
  /* @offset(864) */
  vRefractionPosition : vec3<f32>,
  /* @offset(880) */
  vRefractionSize : vec3<f32>,
  /* @offset(896) */
  vSpecularColor : vec4<f32>,
  /* @offset(912) */
  vEmissiveColor : vec3<f32>,
  /* @offset(928) */
  vDiffuseColor : vec4<f32>,
  /* @offset(944) */
  vAmbientColor : vec3<f32>,
  /* @offset(960) */
  vDetailInfos : vec4<f32>,
  /* @offset(976) */
  detailMatrix : mat4x4<f32>,
}

struct Light0 {
  /* @offset(0) */
  vLightData : vec4<f32>,
  /* @offset(16) */
  vLightDiffuse : vec4<f32>,
  /* @offset(32) */
  vLightSpecular : vec4<f32>,
  /* @offset(48) */
  vLightGround : vec3<f32>,
  /* @offset(64) */
  shadowsInfo : vec4<f32>,
  /* @offset(80) */
  depthValues : vec2<f32>,
}

var<private> position_1 : vec3<f32>;

var<private> normal : vec3<f32>;

@group(1) @binding(2) var<uniform> x_22 : Mesh;

var<private> vNormalW : vec3<f32>;

@group(0) @binding(0) var<uniform> x_63 : Scene;

var<private> vPositionW : vec3<f32>;

@group(1) @binding(0) var<uniform> x_83 : Internals;

@group(1) @binding(1) var<uniform> x_94 : Material;

@group(1) @binding(3) var<uniform> light0 : Light0;

var<private> gl_Position : vec4<f32>;

fn main_1() {
  var positionUpdated : vec3<f32>;
  var normalUpdated : vec3<f32>;
  var finalWorld : mat4x4<f32>;
  var worldPos : vec4<f32>;
  var normalWorld : mat3x3<f32>;
  var uvUpdated : vec2<f32>;
  let x_12 : vec3<f32> = position_1;
  positionUpdated = x_12;
  let x_15 : vec3<f32> = normal;
  normalUpdated = x_15;
  let x_27 : mat4x4<f32> = x_22.world;
  finalWorld = x_27;
  let x_30 : mat4x4<f32> = finalWorld;
  let x_31 : vec3<f32> = positionUpdated;
  worldPos = (x_30 * vec4<f32>(x_31.x, x_31.y, x_31.z, 1.0f));
  let x_41 : mat4x4<f32> = finalWorld;
  let x_42 : vec4<f32> = x_41[0u];
  let x_44 : vec4<f32> = x_41[1u];
  let x_46 : vec4<f32> = x_41[2u];
  normalWorld = mat3x3<f32>(vec3<f32>(x_42.x, x_42.y, x_42.z), vec3<f32>(x_44.x, x_44.y, x_44.z), vec3<f32>(x_46.x, x_46.y, x_46.z));
  let x_51 : mat3x3<f32> = normalWorld;
  let x_52 : vec3<f32> = normalUpdated;
  vNormalW = normalize((x_51 * x_52));
  let x_65 : mat4x4<f32> = x_63.viewProjection;
  let x_66 : vec4<f32> = worldPos;
  gl_Position = (x_65 * x_66);
  let x_71 : vec4<f32> = worldPos;
  vPositionW = vec3<f32>(x_71.x, x_71.y, x_71.z);
  uvUpdated = vec2<f32>(0.0f, 0.0f);
  let x_86 : f32 = x_83.yFactor_;
  let x_89 : f32 = gl_Position.y;
  gl_Position.y = (x_89 * x_86);
  return;
}

struct main_out {
  @location(1)
  vNormalW_1 : vec3<f32>,
  @builtin(position)
  gl_Position : vec4<f32>,
  @location(0)
  vPositionW_1 : vec3<f32>,
}

@vertex
fn main(@location(0) position_1_param : vec3<f32>, @location(1) normal_param : vec3<f32>) -> main_out {
  position_1 = position_1_param;
  normal = normal_param;
  main_1();
  return main_out(vNormalW, gl_Position, vPositionW);
}